Chế độ thực thi Ngôn_ngữ_lập_trình_bậc_cao

Có ba phương thức thực thi chung cho các ngôn ngữ cấp cao hiện đại:

Thông dịchKhi mã viết bằng một ngôn ngữ được thông dịch, cú pháp của nó được đọc và sau đó được thực thi trực tiếp, không có giai đoạn biên dịch. Một chương trình được gọi là trình thông dịch đọc từng câu lệnh của chương trình, theo dòng chương trình, sau đó quyết định phải làm gì và thực hiện nó. Sự kết hợp giữa trình thông dịch và trình biên dịch sẽ biên dịch câu lệnh thành mã máy và thực thi điều đó; mã máy sau đó sẽ bị loại bỏ, sẽ được giải thích lại nếu dòng được thực thi lại. Thông dịch viên thường là cách triển khai đơn giản nhất của hành vi của một ngôn ngữ, so với hai biến thể khác được liệt kê ở đây.Tổng hợpKhi mã được viết bằng một ngôn ngữ được biên dịch, cú pháp của nó sẽ được chuyển đổi thành một dạng thực thi trước khi chạy. Có hai kiểu biên dịch:Tạo mã máyMột số trình biên dịch biên dịch mã nguồn trực tiếp thành mã máy . Đây là phương thức biên dịch ban đầu và các ngôn ngữ được chuyển đổi trực tiếp và hoàn toàn sang mã gốc máy theo cách này có thể được gọi là các ngôn ngữ được biên dịch thực sự . Xem hợp ngữ .Đại diện trung gianKhi mã viết bằng một ngôn ngữ được biên dịch sang một biểu diễn trung gian, biểu diễn đó có thể được tối ưu hóa hoặc lưu để thực thi sau này mà không cần đọc lại tệp nguồn. Khi biểu diễn trung gian được lưu, nó có thể ở một dạng chẳng hạn như bytecode . Biểu diễn trung gian sau đó phải được giải thích hoặc biên dịch thêm để thực thi nó. Các máy ảo thực thi bytecode trực tiếp hoặc biến đổi nó thành mã máy đã xóa mờ sự phân biệt rõ ràng từng có giữa các biểu diễn trung gian và các ngôn ngữ được biên dịch thực sự.Dịch hoặc biên dịch từ nguồn sang nguồnMã được viết bằng một ngôn ngữ có thể được dịch sang các thuật ngữ của ngôn ngữ cấp thấp hơn mà các trình biên dịch mã gốc đã phổ biến. JavaScript và ngôn ngữ C là những mục tiêu chung cho những người dịch như vậy. Xem CoffeeScript, Chicken Scheme và Eiffel làm ví dụ. Cụ thể, có thể thấy mã C và C ++ được tạo (như được tạo từ ngôn ngữ Eiffel khi sử dụng EiffelStudio IDE) trong thư mục EIFGENs của bất kỳ dự án Eiffel đã biên dịch nào. Trong Eiffel, quy trình đã dịch được gọi là biên dịch hoặc biên dịch, và trình biên dịch Eiffel là trình biên dịch hoặc trình biên dịch từ nguồn sang nguồn .

Lưu ý rằng các ngôn ngữ không phải là ngôn ngữ thuần thông dịch hoặc ngôn ngữ thuần biên dịch . Đúng hơn, việc triển khai hành vi ngôn ngữ sử dụng thông dịch hoặc biên dịch. Ví dụ: ALGOL 60Fortran đều đã được thông dịch (mặc dù chúng được biên dịch thường xuyên hơn). Tương tự, Java cho thấy khó khăn khi cố gắng áp dụng các nhãn này cho các ngôn ngữ, thay vì cho các triển khai; Java được biên dịch thành bytecode, sau đó được thực thi bằng cách thông dịch (trong máy ảo Java (JVM)) hoặc biên dịch (thường là với một trình biên dịch chỉ trong thời gian như HotSpot, một lần nữa trong JVM). Hơn nữa, biên dịch, biên dịch và thông dịch không hoàn toàn giới hạn ở chỉ một mô tả của tạo tác trình biên dịch (thực thi nhị phân hoặc hợp ngữ IL).

Kiến trúc máy tính ngôn ngữ cấp cao

Ngoài ra, một ngôn ngữ cấp cao có thể được thực hiện trực tiếp bởi máy tính - máy tính trực tiếp thực thi mã HLL. Đây được gọi là kiến trúc máy tính ngôn ngữ cấp cao - bản thân kiến trúc máy tính được thiết kế để nhắm mục tiêu theo một ngôn ngữ cấp cao cụ thể. Ví dụ, các hệ thống lớn của Burroughs là máy đích cho ALGOL 60 . [11]

Tài liệu tham khảo

WikiPedia: Ngôn_ngữ_lập_trình_bậc_cao ftp://lispnyc.org/meeting-assets/2007-02-13_pinku/... http://www.adtmag.com/joop/article.aspx?id=4597 http://c2.com/cgi/wiki?HighLevelLanguage http://www.clip.dia.fi.upm.es/papers/carro06:strea... http://doi.ieeecomputersociety.org/10.1109/85.5860... //www.worldcat.org/oclc/635507601 https://web.archive.org/web/20070826224349/http://... https://web.archive.org/web/20090111091710/http://... https://web.archive.org/web/20150217154926/http://...